#ifndef __STMFLASH_H__
#define __STMFLASH_H__

#ifdef __cplusplus
extern "C"
{
#endif
    
#include "sys.h"

//用户根据自己的需要设置
#define STM32_FLASH_SIZE 512 //所选STM32的FLASH容量大小(单位为K)
#define STM32_FLASH_WREN 1   //使能FLASH写入(0，不是能;1，使能)

//FLASH起始地址
#define STM32_FLASH_BASE 0x08000000 //STM32 FLASH的起始地址
//FLASH解锁键值

    
////要写入到STM32 FLASH的字符串数组
//float UltraSoundHeight[4]={0.0f,0.0f,0.0f,0.0f};
//const u8 TEXT_Buffer[]={"STM32F103 FLASH"};
//#define SIZE sizeof(TEXT_Buffer)      //数组长度
#define FLASH_SAVE_ADDR  0X08070000   //设置FLASH 保存地址(必须为偶数，且其值要大于本代码所占用FLASH的大小+0X08000000)

u16 STMFLASH_ReadHalfWord(u32 faddr);                                //读出半字
void STMFLASH_WriteLenByte(u32 WriteAddr, u32 DataToWrite, u16 Len); //指定地址开始写入指定长度的数据
u32 STMFLASH_ReadLenByte(u32 ReadAddr, u16 Len);                     //指定地址开始读取指定长度数据
void STMFLASH_Write(u32 WriteAddr, u16 *pBuffer, u16 NumToWrite);    //从指定地址开始写入指定长度的数据
void STMFLASH_Read(u32 ReadAddr, u16 *pBuffer, u16 NumToRead);       //从指定地址开始读出指定长度的数据

//测试写入
void Test_Write(u32 WriteAddr, u16 WriteData);
    
#ifdef __cplusplus
}
#endif

#endif

